using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SpaceShooter.Components;
using SpaceShooter.Components.Weapons;
using SpaceShooter.Utilities;
using Microsoft.Xna.Framework;

namespace SpaceShooter.StateManagement
{
    public class GameState
    {
        //Liste di oggetti del gioco
        public LinkedList<AsteroidsManagerComponent.Asteroid> asteroids;
        public LinkedList<BulletsManagerComponent.Bullet> enemiesBullets;
        public LinkedList<BulletsManagerComponent.Bullet> playerBullets;
        public LinkedList<EffectManagerComponent.Explosion> explosions;
        public LinkedList<EffectManagerComponent.Rock> rocks;
        public LinkedList<EffectManagerComponent.Smoke> smokes;
        public LinkedList<EnemyManagerComponent.Enemy> enemies;
        public LinkedList<PowerUpManager.PowerUp> powerUps;
        public LinkedList<PlayerComponent.PlayerState> playerStates;
        public Stack<IWeapons> playerWeapons;
        public TextureList textures;
        public bool endLevel = false;
        public bool pause = false;

        //Variabili LevelManager
        public int levelPosition;
        public int levelFramesWaited;

        //Variabili player
        public Vector2 playerPosition;
        public bool timeTraveling = false;
        public int timeTank = 132;
        public int playerLife = 100;
        public LifeState playerLifeState = LifeState.NORMAL;
        public bool toggleGun = true;
        
        public GameState()
        {
            asteroids = new LinkedList<AsteroidsManagerComponent.Asteroid>();
            enemiesBullets = new LinkedList<BulletsManagerComponent.Bullet>();
            playerBullets = new LinkedList<BulletsManagerComponent.Bullet>();
            explosions = new LinkedList<EffectManagerComponent.Explosion>();
            rocks = new LinkedList<EffectManagerComponent.Rock>();
            smokes = new LinkedList<EffectManagerComponent.Smoke>();
            enemies = new LinkedList<EnemyManagerComponent.Enemy>();
            powerUps = new LinkedList<PowerUpManager.PowerUp>();
            playerStates = new LinkedList<PlayerComponent.PlayerState>();
            playerWeapons = new Stack<IWeapons>();
            textures = new TextureList();
            levelPosition = 0;
            levelFramesWaited = 0;
        }


    }
}
